function fractionToDecimal(numerator, denominator) {
  // 处理整数部分
  if (numerator % denominator === 0) {
    return String(numerator / denominator);
  }

  // 处理符号
  let sign = "";
  if ((numerator < 0) ^ (denominator < 0)) {
    sign = "-";
  }

  // 取绝对值进行计算
  let num = Math.abs(numerator);
  let den = Math.abs(denominator);

  // 整数部分
  let integerPart = Math.floor(num / den);
  let result = sign + integerPart + ".";

  // 处理小数部分
  let remainder = num % den;
  let decimalParts = [];
  // 记录每个余数第一次出现的位置
  let remainderMap = new Map();

  while (remainder !== 0) {
    // 如果余数重复出现，说明开始循环
    if (remainderMap.has(remainder)) {
      // 在循环开始的位置插入'('
      decimalParts.splice(remainderMap.get(remainder), 0, "(");
      decimalParts.push(")");
      break;
    }

    // 记录当前余数的位置
    remainderMap.set(remainder, decimalParts.length);

    // 计算下一位小数
    remainder *= 10;
    decimalParts.push(Math.floor(remainder / den));
    remainder = remainder % den;
  }

  return result + decimalParts.join("");
}

// 测试示例
console.log(fractionToDecimal(1, 2)); // "0.5"
console.log(fractionToDecimal(2, 1)); // "2"
console.log(fractionToDecimal(4, 333)); // "0.(012)"
